#ifndef LOCATION_HH
#define LOCATION_HH

#include <string>
#include "characters/Player.hh"
using std::string;

/**
 * @class Location
 * @brief Abstract base class for all locations in the game.
 *
 * Provides common properties and virtual functions for all derived map areas.
 */

class Location {
private:
    string name;
    string description;
    string enter;
    string exit;

public:
    Location() {
        this->name=getName();
        this->description=getDescription();
        this->enter=when_enter();
        this->exit=when_exit();
    }
    virtual ~Location() {}
    virtual std::string getName() const {return "";}
    virtual std::string getDescription() const {return "";}
    virtual Player& in(Player& a)=0;
    virtual std::string when_enter() {return "";}
    virtual std::string when_exit() const {return "";}
};

#endif 